home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ivl
/
src
/
easymac.h
< prev
next >
Wrap
Text File
|
2000-02-27
|
3KB
|
88 lines
#if !defined(EASYMAC_H_HAS_INCLUDED)
#define EASYMAC_H_HAS_INCLUDED
/*
* (一応)汎用(かも知れない)安易マクロ定義集
*
* programed by dummy.x. from Feb.17,1997
*/
#include <stdio.h>
#include <stdlib.h>
/* 安易マクロ */
/* 文字列が空文字列か調べる */
#define is_null_str(st) (*(st) == '\0')
/* 数値の絶対値を得る */
#define _ABS(val) (((val) < 0)? -(val): (val))
/* 数値の符号値を得る */
#define _SGN(val) (((val) < 0)? -1: ((val) > 0)? +1: 0)
/* 範囲内にあるかどうか調べる */
#define _TWEEN(val, min, max) ((val) >= (min) && (val) <= (max))
/* デバグ時処理
* マクロ DEBUG が定義されたら引数をそのまま展開する
*/
#if defined(DEBUG)
#define _DEBUGJOB(cmnd) cmnd
#else /* defined(DEBUG) */
#define _DEBUGJOB(cmnd) /* 空置換 */
#endif /* defined(DEBUG) */
/* ビット操作 */
#define biton(bit) (1 << (bit)) /* bit の立った値を取得 */
#define bitoff(bit) (~biton(bit)) /* bit の寝た値を取得 */
#define chkbit(val, bit) ((val) & biton(bit)) /* 指定ビットの値を調べる */
#define tstbit(val, bit) ((val) & biton(bit)) /* 指定ビットの値を調べる */
#define setbit(val, bit) ((val) | biton(bit)) /* 指定ビットを立たせる */
#define clrbit(val, bit) ((val) & ~biton(bit)) /* 指定ビットを寝かせる */
#define revbit(val, bit) ((val) ^ biton(bit)) /* 指定ビットを反転する */
#define setbit_var(var, bit) ((var) |= biton(bit)) /* 指定ビットを立たせた値を代入 */
#define clrbit_var(var, bit) ((var) &= ~biton(bit)) /* 指定ビットを寝かせた値を代入 */
#define revbit_var(var, bit) ((var) ^= biton(bit)) /* 指定ビットを反転した値を代入 */
/* ワード値からバイト値を取得する */
#define lo_byte(val) ((char)(val))
#define hi_byte(val) ((char)((val) >> 8))
/* ロング値からワード値を取得する */
#define lo_word(val) ((short)(val))
#define hi_word(val) ((short)((val) >> 16))
/* ロング値からバイト値を取得する */
#define loe_byte_l(val) ((char)(val))
#define lo_byte_l(val) ((char)((val) >> 8))
#define hi_byte_l(val) ((char)((val) >> 16))
#define hie_byte_l(val) ((char)((val) >> 24))
/* ワード値2つからロング値を構成する */
#define sh2toln(h, l) ((long)((short)(h) << 16) | (unsigned short)(l))
/* 複数のバイト値からワード/ロング値を構成する */
#define ch2tosh(h, l) ((short)((char)(h) << 8) | (unsigned char)(l))
#define ch4toln(he, h, l,le) (sh2toln(ch2tosh(he, h), ch2tosh(l, le)))
#define ch3toln(h, l,le) ch4toln(0, h, l,le)
/* ある特定範囲の乱数整数値を得る(rand() 使用) */
#define get_random_sizemin(size, min) ((rand() % (size)) + (min))
#define get_random_sizemin2(size, min) ((rand() & ((size) - 1)) + (min))
/* size が 2のべき乗数なら使用可 */
#define get_random_minmax(min, max) get_random_sizemin((max) - (min) + 1, min)
/* 標準出力へ出力 */
#define oputc(ch) fputc(ch, stdout)
#define oputs(st) fputs(st, stdout)
/* 標準エラー出力へ出力 */
#define eputc(ch) fputc(ch, stderr)
#define eputs(st) fputs(st, stderr)
/* 配列のデータ数を調べる
* 引数: aryname - 配列変数名
*/
#define numberof(aryname) (sizeof(aryname) / sizeof(aryname[0]))
/* 確保されているメモリを解放する
* 引数: mpvar - 確保メモリアドレス保持変数名
*/
#define free_mem(mpvar) {if (mpvar != NULL) {free((void *)mpvar); mpvar = NULL;}}
/* オープンされているファイルをクローズする
* 引数: fpvar - ファイルポインタ変数名
*/
#define close_file(fpvar) {if (fpvar != NULL) {fclose(fpvar); fpvar = NULL;}}
#endif /* !defined(EASYMAC_H_HAS_INCLUDED) */